package model

import "gorm.io/gorm"

type Video struct {
	gorm.Model
	Title         string  `gorm:"type:varchar(255);not null" json:"title"`  // 视频标题
	Types         string  `gorm:"not null" json:"types"`                    // 视频类型ID（1电影，2电视剧，3综艺等）
	Category      string  `gorm:"not null" json:"category"`                 // 分类ID（动作、爱情、悬疑等）
	Area          string  `gorm:"not null" json:"area"`                     // 地区ID
	Year          string  `gorm:"not null" json:"year"`                     // 年份ID
	CoverURL      string  `gorm:"type:varchar(512)" json:"coverUrl"`        // 封面图
	Introduce     string  `gorm:"type:text" json:"introduce"`               // 视频简介
	Score         float32 `gorm:"type:decimal(3,1);default:0" json:"score"` // 评分
	Status        int64   `gorm:"default:0" json:"status"`                  // 审核状态（0待审，1通过，2驳回）
	PlayCount     int64   `gorm:"default:0" json:"playCount"`               // 总播放量
	Hot           float64 `gorm:"default:0" json:"hot"`                     // 热度
	RejectReason  string  `gorm:"type:varchar(255)" json:"rejectReason"`    // 驳回理由
	LikeCount     int64   `gorm:"default:0" json:"likeCount"`               // 点赞量
	CollectCount  int64   `gorm:"default:0" json:"collectCount"`            // 收藏量
	CommentCount  int64   `gorm:"default:0" json:"commentCount"`            // 评论量
	Actors        string  `gorm:"not null" json:"actors"`                   // 主演
	EpisodesCount int64   `gorm:"default:0" json:"episodesCount"`           //总集数
}

type VideoEpisode struct {
	gorm.Model
	VideoID    int64  `gorm:"index;not null" json:"videoId"`             // 所属视频ID
	Title      string `gorm:"type:varchar(255);not null" json:"title"`   // 剧集标题（第几集）
	EpisodeNum int64  `gorm:"not null" json:"episodeNum"`                // 集数（1,2,3...）
	PlayURL    string `gorm:"type:varchar(512);not null" json:"playUrl"` // 播放地址
	Duration   int64  `gorm:"default:0" json:"duration"`                 // 时长（秒）
	PlayCount  int64  `gorm:"default:0" json:"playCount"`                // 剧集播放量
	Status     int8   `gorm:"default:1" json:"status"`                   // 状态（1上架，0下架）
}

type PlayLog struct {
	gorm.Model
	UserId        int64   `gorm:"index;not null" json:"userId"`
	EpisodeId     int64   `gorm:"index;not null" json:"episodeId"`
	PlayProgress  float64 `gorm:"column:play_progress;type:decimal(10,2);not null" json:"play_progress"`   // 播放进度（百分比，如35.50）
	WatchDuration int64   `gorm:"column:watch_duration;type:int;not null" json:"watchDuration"`            // 实际观看时长（秒）
	IsComplete    int64   `gorm:"column:is_complete;type:tinyint(1);not null;default:0" json:"isComplete"` // 是否播放完成（0=未完成，1=已完成）
}

func GetVideoData(video Video) interface{} {
	if video.Types == "电影" {
		return Movie{
			Title: video.Title,
			Score: video.Score,
		}
	} else if video.Types == "电视剧" {
		return TVShow{
			Title:         video.Title,
			EpisodesCount: video.EpisodesCount,
		}
	}
	return nil
}

type Movie struct {
	Title string  `json:"title"`
	Score float32 `json:"score"`
}

type TVShow struct {
	Title         string `json:"title"`
	EpisodesCount int64  `json:"episodes"`
}
